package com.book.service;

import com.book.core.domain.SysMenu;
import com.baomidou.mybatisplus.extension.service.IService;
import com.book.core.dto.SysRoleSaveDTO;
import com.book.core.query.SysMenuQuery;
import com.book.core.vo.SysMenuVO;

import java.util.List;

/**
 * @author hongmizfb
 * @description 针对表【sys_menu】的数据库操作Service
 * @createDate 2025-05-11 16:30:25
 */
public interface SysMenuService extends IService<SysMenu> {

    /**
     * 查询菜单树列表
     *
     * @return {@link List }<{@link SysMenuVO }>
     */
    List<SysMenuVO> getMenuTreeList(SysMenuQuery query);

    /**
     * 查询可以作为父菜单的菜单列表
     *
     * @return {@link List }<{@link SysMenuVO }>
     */
    List<SysMenuVO> getParentMenuList();

    /**
     * 查询一个系统用户拥有的权限数据
     *
     * @param userId 系统用户
     * @return {@link List }<{@link String }>
     */
    List<String> getMenuCodeListByUserId(Integer userId);

    /**
     * 获取一个角色拥有的菜单列表
     *
     * @param roleId 角色id
     * @return {@link List }<{@link SysMenu }>
     */
    List<SysMenu> getMenuListByRoleId(Integer roleId);

    /**保存角色信息
     * @param sysMenuRoleDTO
     */
    void saveMenuRole(SysRoleSaveDTO sysMenuRoleDTO);
}
